home *** CD-ROM | disk | FTP | other *** search
/ CU Amiga Super CD-ROM 2 / CU Amiga Magazine's Super CD-ROM 02 (1996)(EMAP Images)(GB)[!][issue 1996-04].iso / magazine / amiga_e / divers / pcdir.e < prev    next >
Text File  |  1994-05-02  |  3KB  |  79 lines

  1. /*============================================
  2.  = PcDir v0.0 © 1994 NasGûl
  3.  ============================================*/
  4. MODULE 'dos/dos'
  5. CONST ESC="\e["
  6. CONST NOIR="0m"
  7. DEF firstdir[80]:STRING
  8. DEF dironly=FALSE
  9. DEF dirall=FALSE
  10. PROC main() /*"main()"*/
  11.     DEF myargs:PTR TO LONG,rdargs=NIL
  12.     myargs:=[0,0,0]
  13.     IF rdargs:=ReadArgs('Dir,Dirs/S,All/S',myargs,NIL)
  14.         IF myargs[0] THEN StrCopy(firstdir,myargs[0],ALL) ELSE StrCopy(firstdir,'',ALL)
  15.         IF myargs[1] THEN dironly:=TRUE
  16.         IF myargs[2] THEN dirall:=TRUE
  17.         WriteF('PcDir v0.0 © 1994 NasGûl\n\s\n',firstdir)
  18.         p_LookDir(firstdir)
  19.         IF rdargs THEN FreeArgs(rdargs)
  20.     ELSE
  21.         WriteF('BadArgs !!.\n')
  22.     ENDIF
  23. ENDPROC
  24. PROC p_LookDir(curdir) /*"p_LookDir(curdir)"*/
  25.     DEF info:fileinfoblock,lock
  26.     DEF currentdir[256]:STRING,pv[256]:STRING
  27.     DEF filepiv[256]:STRING
  28.     DEF tabnum,bb,break=FALSE
  29.     IF lock:=Lock(curdir,-2)
  30.         NameFromLock(lock,currentdir,256)
  31.         AddPart(currentdir,'',256)
  32.         IF Examine(lock,info)
  33.             IF info.direntrytype>0
  34.                 WHILE ExNext(lock,info)
  35.                     IF CtrlC() THEN break:=TRUE
  36.                     IF info.direntrytype>0
  37.                         StringF(pv,'\s\s',currentdir,info.filename)
  38.                         tabnum:=p_GetNumSlash(pv)
  39.                         FOR bb:=0 TO tabnum-1
  40.                             WriteF('\e[33m|   \e[0m')
  41.                         ENDFOR
  42.                         WriteF('\e[33m|---\e[0m')
  43.                         WriteF('\e[32m\s\e[0m\n',info.filename)
  44.                         IF CtrlC() THEN break:=TRUE
  45.                         IF dirall=TRUE THEN p_LookDir(pv)
  46.                     ELSE
  47.                         IF dironly=FALSE
  48.                             StringF(filepiv,'\s\s',currentdir,info.filename)
  49.                             tabnum:=p_GetNumSlash(filepiv)
  50.                             FOR bb:=0 TO tabnum-1
  51.                                 WriteF('\e[33m|   \e[0m')
  52.                             ENDFOR
  53.                             WriteF('\e[33m|---\e[0m')
  54.                             WriteF('\s\n',info.filename)
  55.                         ENDIF
  56.                         IF CtrlC() THEN break:=TRUE
  57.                     ENDIF
  58.                 ENDWHILE
  59.             ELSE
  60.             ENDIF
  61.         ENDIF
  62.         IF lock THEN UnLock(lock)
  63.     ELSE
  64.         WriteF('What ?!?\n')
  65.     ENDIF
  66.     IF break
  67.         IF lock THEN UnLock(lock)
  68.         CleanUp(0)
  69.     ENDIF
  70. ENDPROC
  71. PROC p_GetNumSlash(str) /*"p_GetNumSlash(str)"*/
  72.     DEF b,s=0
  73.     DEF carac[1]:STRING
  74.     FOR b:=0 TO StrLen(str)-1
  75.         MidStr(carac,str,b,1)
  76.         IF Char(carac)=$2F THEN INC s
  77.     ENDFOR
  78. ENDPROC s
  79.